package com.tanhua.server.controller;

import com.tanhua.server.service.CommentsService;
import com.tanhua.server.service.MovementsMqService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/comments")
public class CommentsController {



    @Autowired
    private CommentsService commentsService;

    @Autowired
    private MovementsMqService movementsMqService;

//    分页查询指定动态的评论
    //    1、请求方式 get
//    2、请求地址 /comments
//    3、请求参数 类型application/json 请求头上有Authorization
//      Query参数  page  pagesize  movementId
//    4、返回结果  PageResult
    @GetMapping(  name = "分页查询指定动态的评论")
    public ResponseEntity queryComments(@RequestParam(defaultValue = "1") Integer page,
                                        @RequestParam(defaultValue = "10") Integer pagesize,
                                        String movementId) {
        return commentsService.queryComments(page,pagesize,movementId);
    }


    //    发布评论
    //    1、请求方式 post
//    2、请求地址 /comments
//    3、请求参数 类型application/json 请求头上有Authorization
//     body参数 {movementId:1212121212,comment:"haohao"}
//    4、返回结果
    @PostMapping(  name = "发布评论")
    public ResponseEntity saveComments(@RequestBody Map param) {
        String movementId = (String) param.get("movementId");
        String comment = (String) param.get("comment");

        movementsMqService.sendMsg(movementId,4);

        return commentsService.saveComments(movementId,comment);
    }



    //    对评论点赞
    //    1、请求方式 get
//    2、请求地址 /comments/:id/like
//    3、请求参数 类型application/json 请求头上有Authorization
//     路径参数 id
//    4、返回结果  点赞数
    @GetMapping(value = "/{id}/like", name = "对评论点赞")
    public ResponseEntity commentLike(@PathVariable("id") String commentId ) {
        return commentsService.commentLike(commentId);
    }

    //    对评论取消点赞
    //    1、请求方式 get
//    2、请求地址 /comments/:id/dislike
//    3、请求参数 类型application/json 请求头上有Authorization
//     路径参数 id
//    4、返回结果  点赞数
    @GetMapping(value = "/{id}/dislike", name = "对评论取消点赞")
    public ResponseEntity commentDislike(@PathVariable("id") String commentId ) {
        return commentsService.commentDislike(commentId);
    }
}
